// 获取当前年月
var thisYear = new Date().getFullYear().toString();
var thisMonth = (new Date().getMonth() + 1).toString();
var ymDateStr = thisYear + '-' + thisMonth;
// 排名列表
var $RankingTable = $('#rankTable');
// 产品表
var $productTable = $('#productTable');
// 默认选中第一条数据开关
var defaultFlag = true;


$(function () {
    // 业绩排名
    rankingList();

    // 日期控件
    $('#dateYear').datepicker({
        language: 'zh-CN',
        maxViewMode: 'decade',
        minViewMode: 'months',
        format: 'yyyy-mm',
        autoclose:true,
        todayHighlight: true,
        todayBtn: 'linked'
    }).datepicker('setDate', ymDateStr).on('changeDate', function (e) {
        console.log('修改了日期');
        ymDateStr = $(this).val();
        rankingList();
    }).on('show', function (e) {
        $('th.today').text('返回当前月份');
    });

    // 切换标签
    $('a[data-toggle="tab"]').on('shown.bs.tab', function (event) {
        console.log('切换标签操作');
    })
});


/**
 * 排名数据获取
 * @param ymDateStr  查询时间 格式：YYYY-MM
 * */
function rankingList() {
    var params = {
        ymDateStr
    }
    $.ajax({
        url: '/performanceRanking/companyPerformanceRankingByYm',
        type: 'POST',
        dataType: 'JSON',
        contentType: 'application/json;charset=utf-8',
        data: JSON.stringify(params),
        success: function (data) {
            if (data.code == '000000') {
                var rankingDatas = data.data;
                for (let i = 0; i < rankingDatas.length; i++) {
                    rankingDatas[i].rank = i + 1;
                }
                console.log('排名数据：', rankingDatas);

                if (rankingDatas.length) {
                    // 加载排名数据时，初始化选中第一条数据
                    defaultFlag = true;
                    rankingTable(rankingDatas);
                } else {
                    $('#accountId').val('');
                    rankingTable();
                    proportionChart();
                    performanceComposition();
                    productList();
                    repaymentAbility();
                }
            } else {
                $.alert({
                    title: '系统提醒',
                    content: '获取排名数据失败，错误代码(' + data.code + ')'
                });
            }
        },
        error: function (res) {
            console.log('获取数据出错，详情：', res);
        }
    })
}
// 排名列表初始化
function rankingTable(rankingData) {
    $RankingTable.bootstrapTable('destroy');
    $RankingTable.bootstrapTable({
        classes: 'rank-table',
        data: rankingData,
        dataType: 'json',                                       // 数据类型
        clickToSelect: true,                                    // 是否启用点击选中行
        singleSelect: true,
        striped: true,                                          // 是否显示行间隔色
        pagination: true,                                       // 是否显示分页
        sidePagination: 'client',                               // 分页方式：client客户端分页，server服务端分页
        pageSize: 10,                                           // 每页的记录行数
        pageNumber: 1,                                          // 初始化加载第1页，默认第1页
        paginationLoop: false,
        maintainSelected :true,
        uniqueId: 'accountId',
        idField: 'accountId',
        height: 912,
        columns: [
            {radio: true, visible: true, width: 0},
            {field: 'accountId', align: 'left', valign: 'middle',
                formatter: function (value, row, index) {
                    var className;
                    index < 3 ? className = 'top-rank' + index : className = '';
                    if (!row.avatar) {
                        // 头像为空时，设置默认头像
                        row.avatar = '/images/head-neutral.png';
                    }
                    var listDom = `
                        <div class="rank-box">
                            <div><div class="rank-head"><img src="${row.avatar}" alt=""></div></div>
                            <div>
                                <h5>${row.accountName}</h5>
                                <p>业绩金额：<span>${row.arriveMoney}</span></p>
                                <div class="rank-tip ${className}">NO.${row.rank}</div>    
                            </div>
                        </div>
                    `;
                    return listDom;
                }
            },
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    rows: result.data,
                    total: result.totalRecords//总条数
                };
            } else {
                var obj = {
                    total: 0,
                    rows: [],
                }
            }
            return obj;
        },
        onPostBody: function () {
            $('.ranking-list .page-pre a').html('上一页 <i class="mdi mdi-chevron-double-up"></i>');
            $('.ranking-list .page-next a').html('下一页 <i class="mdi mdi-chevron-double-down"></i>');

            // 首条数据初始化
            defaultFlag && $RankingTable.find('tbody tr:first-child .rank-box').trigger('click');
        },
        onLoadSuccess: function (data) {},
        onLoadError: function (status) {
            if (status == 403) {
                promptInfo('权限不足！禁止访问！');
            } else {
                promptInfo('加载失败！');
            }
        },
        formatLoadingMessage: function () {
            return '请稍等，加载中...';
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
        onClickRow: function (row, $element, field) {
            defaultFlag = false;
            // 点击效果
            $RankingTable.find('.rank-box').removeClass('active');
            $element.find('.rank-box').addClass('active');

            // 加载数据
            var accountId = row[field];
            $('#accountId').val(accountId);
            // 产品占比
            productProportion(accountId);
            // 业绩组成
            performanceComposition(accountId);
            // 产品列表
            productList(accountId);
            // 回款能力
            repaymentAbility(accountId);
        },
    })
}


/* ====================================== 业绩分析标签 开始 ====================================== */

/**
 * 产品占比分析
 * @param accountId 业务员Id
 * @param ymDateStr 查询时间 格式：YYYY-MM
 * */
function productProportion(accountId) {
    var params = {
        accountId,
        ymDateStr
    };
    $.ajax({
        url: '/performanceRanking/getAnalysisOfProductProportion',
        type: 'POST',
        dataType: 'JSON',
        contentType: 'application/json;charset=utf-8',
        data: JSON.stringify(params),
        success: function (data) {
            if (data.code == '000000') {
                var proportionDatas = data.data;

                console.log('占比数据：', proportionDatas);
                var chartDatas = []
                for (let i = 0; i < proportionDatas.length; i++) {
                    var data = {
                        value: proportionDatas[i].ratio,
                        name: proportionDatas[i].productName
                    }
                    chartDatas.push(data);
                }
                proportionChart(chartDatas)
            } else {
                $.alert({
                    title: '系统提醒',
                    content: '获取排名数据失败，错误代码(' + data.code + ')'
                });
            }
        },
        error: function (res) {
            console.log('获取数据出错，详情：', res);
        }
    })
}
// 占比图表初始化
function proportionChart(data) {
    let proportionDom = document.getElementById('proportionChart');
    let proportionChart = echarts.init(proportionDom);
    let option = {
        tooltip: {
            trigger: 'item',
            formatter: function (params, ticket, callback) {
                var tooltip = params.name + '<br><span class="tooltip-icon" style="background: ' + params.color + '"></span>产品占比：' + (params.value * 100).toFixed(2) + '%';
                return tooltip;
            }
        },
        legend: {
            orient: 'vertical',
            icon: 'circle',
            itemWidth: 10,
            itemHeight: 10,
            itemGap: 16,
            right: '20',
            top: 'center'
        },
        color: ['#9580ff', '#6699ff', '#a1e5ce', '#52cca3', '#bfb3ff'],
        series: [
            {
                name: '产品占比分析',
                type: 'pie',
                radius: '70%',
                center: ['30%', '50%'],
                data: data,
                label: {
                    show: false,
                    position: 'inner',
                },
                emphasis: {
                    itemStyle: {
                        borderColor: '#fff',
                        borderWidth: 4
                    }
                }
            }
        ]
    };
    proportionChart.setOption(option);
    window.addEventListener("resize", function () {
        proportionChart.resize();
    });
}

/**
 * 个人业绩组成
 * @param accountId 业务员Id
 * @param ymDateStr 查询时间 格式：YYYY-MM
 * */
function performanceComposition(accountId) {
    $('#memberProductAmount, #nomemberProductAmount').html('<span>¥</span>0.00<i></i>');
    var params = {
        accountId,
        ymDateStr
    };
    $.ajax({
        url: '/performanceRanking/getPerformanceComposition',
        type: 'POST',
        dataType: 'JSON',
        contentType: 'application/json;charset=utf-8',
        data: JSON.stringify(params),
        success: function (data) {
            if (data.code == '000000') {
                var datsas = data.data;
                console.log('个人业绩组成数据：', datsas);
                for (let i = 0; i < datsas.length; i++) {
                    if (datsas[i].productCategories == '会员') {
                        $('#memberProductAmount').html('<span>¥</span>' + formatePrice(datsas[i].amount, 0) + '<i></i>');
                    }
                    if (datsas[i].productCategories == '非会员') {
                        $('#nomemberProductAmount').html('<span>¥</span>' + formatePrice(datsas[i].amount, 0) + '<i></i>');
                    }
                }
                // formatePrice
            } else {
                $.alert({
                    title: '系统提醒',
                    content: '获取个人业绩组成数据失败，错误代码(' + data.code + ')'
                });
            }
        },
        error: function (res) {
            console.log('获取数据出错，详情：', res);
        }
    })
}

/**
 * 产品列表
 * @param accountId 业务员Id
 * @param ymDateStr 查询时间 格式：YYYY-MM
 */
function productList(accountId) {
    $productTable.bootstrapTable('destroy');
    $productTable.bootstrapTable({
        classes: 'table table-hover table-bordered table-striped ',
        url: '/performanceRanking/getPersonalPerformanceAnalysis',
        method: 'post',                                         // 请求方式
        contentType: 'application/x-www-form-urlencoded',       // 请求内容类型
        dataType: 'json',                                       // 数据类型
        striped: true,                                          // 是否显示行间隔色
        sortable: true,                                         // 是否启用排序
        cache: false,                                           // 是否使用缓存
        showColumns: false,                                     // 显示隐藏列
        showRefresh: false,                                     // 显示刷新按钮
        showToggle: false,                                      // 切换显示样式
        showFooter: false,                                      // 显示Table脚部
        pagination: true,                                       // 是否显示分页
        showPaginationSwitch: false,                            // 是否显示分页按钮
        clickToSelect: true,                                    // 是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,                                 // 最少要显示的列数
        undefinedText: '-',                                     // cell没有值时显示
        sidePagination: "server",                               // 分页方式：client客户端分页，server服务端分页
        paginationLoop: false,
        uniqueId: '',
        idField: '',
        pageSize: 5,                                            // 每页的记录行数
        pageNumber: 1,                                          // 初始化加载第1页，默认第1页
        pageList: '[5, 10, 15, 20]',                            // 可供选择的每页的行数
        queryParams: function (params) {
            params.pageSize = params.limit;
            params.pageIndex = (params.offset / params.limit) + 1;
            params.sortName = params.sort;
            params.sortOrder = params.order;
            // 参数
            params.accountId = accountId;
            params.yearMonth = ymDateStr;
            return params;
        },
        columns: [
            {title: '序号', field: 'index', align: 'left', width: '60', valign: 'middle',
                formatter: function (value, row, index) {
                    return index + 1;
                }
            },
            {title: '产品名称', field: 'productName', align: 'left', valign: 'middle'},
            {title: '产品类型', field: 'productCategories', align: 'left', valign: 'middle'},
            {title: '产品金额', field: 'amount', align: 'right', valign: 'middle'},
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    rows: result.data.list,
                    total: result.data.totalRecords//总条数
                };
            } else {
                var obj = {
                    total: 0,
                    rows: [],
                }
            }
            return obj;
        },
        onLoadSuccess: function (data) {},
        onLoadError: function (status) {
            if (status == 403) {
                promptInfo('权限不足！禁止访问！');
            } else {
                promptInfo('加载失败！');
            }
        },
        formatLoadingMessage: function () {
            return '请稍等，加载中...';
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    })
}

/**
 * 回款能力
 * @param accountId 业务员Id
 * @param ymDateStr 查询时间 格式：YYYY-MM
 * */
function repaymentAbility(accountId) {
    var params = {
        accountId,
        ymDateStr
    };
    $.ajax({
        url: '/performanceRanking/getRepaymentAbility',
        type: 'POST',
        dataType: 'JSON',
        contentType: 'application/json;charset=utf-8',
        data: JSON.stringify(params),
        success: function (data) {
            if (data.code == '000000') {
                var datsas = data.data;
                console.log('回款能力数据：', datsas);
                $('#contractNum').text(formatePrice(datsas.total) || 0);
                $('#returnContractNum').text(formatePrice(datsas.achievement) || 0);
                $('#returnProportion').text(datsas.ratio || 0);
            } else {
                $.alert({
                    title: '系统提醒',
                    content: '获取回款能力数据失败，错误代码(' + data.code + ')'
                });
            }
        },
        error: function (res) {
            console.log('获取数据出错，详情：', res);
        }
    })
}


/* ====================================== 业绩分析标签 结束 ====================================== */


/**
 * 提示信息
 * @param content  提示内容
 * @param callBack 回调函数
 */
function promptInfo(content, callBack) {
    $.alert({
        title: '系统提示',
        content: content,
        scrollToPreviousElement: false,
        scrollToPreviousElementAnimate: false,
        buttons: {
            confirm: {
                text: '确认',
                btnClass: 'btn-primary',
                action: callBack
            }
        }
    });
}

/**
 * 金额转换为千位加逗号分隔
 * @param price    金额数值
 * @param decimal  保留小数的位数
 */
function formatePrice(price, decimal) {
    //金额转换 分->元 保留2位小数 并每隔3位用逗号分开 1,234.56
    var str = (price).toFixed(decimal) + '';
    var dotNum;
    decimal > 0 ? dotNum = str.indexOf('.') : dotNum = str.length;
    var intSum = str.substring(0, dotNum).replace( /\B(?=(?:\d{3})+$)/g, ',' );//取到整数部分
    var dot = str.substring(str.length, dotNum)//取到小数部分搜索
    var ret = intSum + dot;
    return ret;
}

























































